perm filename HASH.FAI[SYS,HE] blob sn#004187 filedate 1972-06-05 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00003 00002		ENTRY HASH,REHASH
 00025 ENDMK
⊗;
	ENTRY HASH,REHASH

	↓A←1
	↓B←2
	↓C←3
	↓D←4
	↓X←5
	↓Y←6
	↓Z←7
	↓Q←10
	↓SP←16
	↓P←17

	TITLE HASH

	BEGIN HASH
	BITS←11
	IFE BITS-6,{PRIME←3⎇
	IFE BITS-7,{PRIME←5⎇
	IFE BITS-10,{PRIME←13⎇
	IFE BITS-11,{PRIME←23⎇
	IFE BITS-12,{PRIME←45⎇
	CMASK←7777⊗(BITS-12)
	BMASK←CMASK⊗-2
↑HASH:	POP SP,D		;POINTER
	POP SP,C		;COUNT
	ANDI C,-1
	SETZB A,R
	AOS R
	ILDB A,D
	IMULI A,PRIME
	SOJLE C,L2
L1:	ILDB B,D
	ADDI A,(B)
	SOJG C,L1
	IMULI A,PRIME
L2:	ANDI A,BMASK
	MOVEM A,H
	POPJ P,
↑REHASH:MOVE A,R
	IMULI A,5
	ANDI A,CMASK
	MOVEM A,R
	LSH A,-2
	JUMPE A,E1
	ADD A,H
	ANDI A,BMASK
	POPJ P,
E1:	MOVEI A,[ASCIZ/SYMBOL TABLE FULL/]
      	CALLI A,3
	CALLI A,12
R:	Z
H:	Z
	BEND

	END